package com.itheima;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Example38 {
    public static void main(String[] args) {
        Pattern p = Pattern.compile("\\d+");
        Matcher m = p.matcher("22bb23");
        System.out.println("字符串是否匹配:" + m.matches());//结果：false，解释：因为bb不是数字，而p模式只匹配数字且matches是完全匹配，所以匹配失败。
        Matcher m2 = p.matcher("2223");
        System.out.println("字符串2223与模式p是否匹配:" + m2.matches());//结果：true，解释：因为2223是数字，所以匹配成功。
        System.out.println("字符串22bb23与模式p的匹配结果:" + m.lookingAt());//结果：true，解释：因为22bb23中开头包含数字且lookingat是从开头开始匹配，所以匹配成功。
        Matcher m3 = p.matcher("aa2223");
        System.out.println("字符串aa2223与模式p的匹配结果:" + m3.lookingAt());//结果：false，解释：因为aa2223中开头不包含数字，所以匹配失败。
        System.out.println("字符串22bb23与模式p是否存在下一个匹配结果:" +
                m.find());//结果：true，解释：因为22bb23中第一个是数字，所以匹配成功。
        m3.find();//返回true
        System.out.println("字符串aa2223与模式p是否存在在下一个匹配结果：" +
                m3.find());//结果：false，解释：因为aa2223中第一个字符不是数字，所以匹配失败。
        Matcher m4 = p.matcher("aabb");
        System.out.println("字符串aabb与模式p是否存在下一个匹配结果：" +
                m4.find());//结果：false，解释：因为aabb中不包含数字，所以匹配失败。
        Matcher m1 = p.matcher("aaa2223bb");
        m1.find();//匹配2223
        System.out.println("模式p与字符串aaa2223bb的匹配的起始索引:" +
                m1.start());//结果：3，因为2在字符串中是第4个字符，所以起始索引为3。
        System.out.println("模式p与字符串aaa2223bb的最后一个字符匹配后的偏移量" +
                m1.end());//结果：7，因为2223在字符串中是第6个字符，所以最后一个字符匹配后的偏移量为7。
        System.out.println("模式p与字符串aaa2223bb的匹配到的子字符串:" +
                m1.group());//结果：2223，因为2223是字符串aaa2223bb中匹配到的子字符串。
        Pattern p2 = Pattern.compile("[/]+");
        Matcher m5 = p2.matcher("张三/李四//王五///赵六");
        System.out.println("将字符串张三/李四//王五///赵六中的/全部替换为|:" +
                m5.replaceAll("|"));//结果：张三|李四|王五|赵六，解释：首先将m5使用p2模式匹配，然后将匹配到的/全部替换为|，所以结果为张三|李四|王五|赵六。
        System.out.println("将字符串张三/李四//王五///赵六中的首个/替换为|:" +
                m5.replaceFirst("|"));//结果：张三|李四//王五///赵六，解释：首先将m5使用p2模式匹配，然后将匹配到的首个/替换为|，所以结果为张三|李四//王五///赵六。
    }
}
